import commonjs from '@rollup/plugin-commonjs';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import typescript from '@rollup/plugin-typescript';
import strip from '@rollup/plugin-strip';
import externals from 'rollup-plugin-node-externals';
import postcss from 'rollup-plugin-postcss';
import autoprefixer from 'autoprefixer';
import cssnano from 'cssnano';
import { fileURLToPath } from 'node:url';

export default {
  input: 'src/main.js',
  output: {
    // file: 'dist/bundle.js',
    // 配合 preserveModules 选项一起使用
    dir: fileURLToPath(new URL('dist', import.meta.url)),
    format: 'esm',
    // name: 'test',
    exports: 'named', // 指定导出模式（自动、默认、命名、无）
    preserveModules: true, // 保留模块结构
    preserveModulesRoot: 'src', // 将保留的模块放在根级别的此路径下
  },
  plugins: [
    // 支持将源码与依赖的第三方库进行合并打包
    nodeResolve(),
    // 支持 commonjs 的模块
    commonjs(),
    // 避免一个个手动配置 external
    externals({
      devDeps: false, // devDependencies 类型的依赖就不用加到 externals 了
    }),
    // 处理并打包样式文件
    postcss({
      plugins: [autoprefixer(), cssnano()],
      // 抽离 css 到单独的文件
      extract: 'index.css',
    }),
    // 支持 ts 文件
    typescript(),
    // 导出类型声明文件，报错
    // typescript({
    //   outDir: 'dist',
    //   declaration: true,
    //   declarationDir: 'dist',
    // }),
    // 清除代码中的调试语句
    // strip(),
  ],
  //   external: ['lodash-es'],
};
